package com.lc.utils;

import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTHeader;
import com.lc.pojo.UmsUser;

import java.util.Date;

/**
 * JWT工具类
 */
public class JWTUtil {

    //密钥
    private static final String SECRET_KEY = "6c6f6103-882d-8963-37cd-74dcf698388c";

    //Token过期时间（秒）
    public static final long EXPIRE_TIME = 30 * 60;

    //生成token，存入umsUser信息
    public static String createToken(UmsUser umsUser){
        // 使用密钥生成JWT
        byte[] key = SECRET_KEY.getBytes();

        // 创建JWT并设置过期时间、用户信息和密钥
        String token = JWT.create()
                .setPayload("userInfo",umsUser)
                .setExpiresAt(new Date(System.currentTimeMillis() + EXPIRE_TIME * 1000))
                .setKey(key)
                .sign();
        return token;
    }

    //解析token，获取umsUser信息
    public static UmsUser parseToken(String token) {
        //解析token
        JWT jwt = JWT.of(token);

        // JWT
        jwt.getHeader(JWTHeader.TYPE);
        // HS256
        jwt.getHeader(JWTHeader.ALGORITHM);

        // JSON对象 转为 umsUser实体对象
        UmsUser user = jwt.getPayload().getClaimsJson().get("userInfo", UmsUser.class);

        return user;
    }

    // 校验token是否有效
    public static boolean checkToken(String token) {
        return cn.hutool.jwt.JWTUtil.verify(token,SECRET_KEY.getBytes());
    }

}
